home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / rex.lha / rex / m2c / Tree.h < prev    next >
C/C++ Source or Header  |  1992-08-18  |  3KB  |  109 lines

  1. #define DEFINITION_Tree
  2.  
  3. #ifndef DEFINITION_Sets
  4. #include "Sets.h"
  5. #endif
  6.  
  7. #ifndef DEFINITION_Texts
  8. #include "Texts.h"
  9. #endif
  10.  
  11. #ifndef DEFINITION_StringMem
  12. #include "StringMem.h"
  13. #endif
  14.  
  15. #ifndef DEFINITION_Positions
  16. #include "Positions.h"
  17. #endif
  18.  
  19. #define Tree_NoTree    NIL
  20. #define Tree_nList    1
  21. #define Tree_nRule    2
  22. #define Tree_nPattern    3
  23. #define Tree_nAlternative    4
  24. #define Tree_nSequence    5
  25. #define Tree_nRepetition    6
  26. #define Tree_nOption    7
  27. #define Tree_nChar    8
  28. #define Tree_nSet    9
  29. #define Tree_nString    10
  30. typedef struct Tree_9 *Tree_tTree;
  31. typedef struct Tree_1 {
  32.     SHORTCARD Rule;
  33. } Tree_Node0;
  34. typedef struct Tree_2 {
  35.     SHORTCARD Rule;
  36.     Tree_tTree Son1;
  37. } Tree_Node1;
  38. typedef struct Tree_3 {
  39.     SHORTCARD Rule;
  40.     Tree_tTree Son1;
  41.     Tree_tTree Son2;
  42. } Tree_Node2;
  43. typedef struct Tree_4 {
  44.     SHORTCARD Rule;
  45.     CHAR Ch;
  46. } Tree_NodeCh;
  47. typedef struct Tree_5 {
  48.     SHORTCARD Rule;
  49.     Sets_tSet Set;
  50. } Tree_NodeSet;
  51. typedef struct Tree_6 {
  52.     SHORTCARD Rule;
  53.     StringMem_tStringRef String;
  54. } Tree_NodeString;
  55. typedef struct Tree_7 {
  56.     SHORTCARD Rule;
  57.     Tree_tTree Patterns;
  58.     Texts_tText TargetCode;
  59.     SHORTCARD Line;
  60.     SHORTCARD CodeMode;
  61.     SHORTCARD RuleNr;
  62. } Tree_NodeRule;
  63. typedef struct Tree_8 {
  64.     SHORTCARD Rule;
  65.     Sets_tSet StartStates;
  66.     Tree_tTree RegExpr;
  67.     Tree_tTree RightContext;
  68.     BOOLEAN IsConstantRE;
  69.     SHORTCARD PatternNr;
  70.     Positions_tPosition Position;
  71. } Tree_NodePattern;
  72. typedef struct Tree_9 {
  73.     union {
  74.         struct {
  75.             Tree_Node0 vNode0;
  76.         } V_1;
  77.         struct {
  78.             Tree_Node1 vNode1;
  79.         } V_2;
  80.         struct {
  81.             Tree_Node2 vNode2;
  82.         } V_3;
  83.         struct {
  84.             Tree_NodeCh vNodeCh;
  85.         } V_4;
  86.         struct {
  87.             Tree_NodeSet vNodeSet;
  88.         } V_5;
  89.         struct {
  90.             Tree_NodeString vNodeString;
  91.         } V_6;
  92.         struct {
  93.             Tree_NodeRule vNodeRule;
  94.         } V_7;
  95.         struct {
  96.             Tree_NodePattern vNodePattern;
  97.         } V_8;
  98.     } U_1;
  99. } Tree_Node;
  100. extern Tree_tTree Tree_MakeTree1 ARGS((SHORTCARD pRule, Tree_tTree pSon1));
  101. extern Tree_tTree Tree_MakeTree2 ARGS((SHORTCARD pRule, Tree_tTree pSon1, Tree_tTree pSon2));
  102. extern Tree_tTree Tree_MakeTreeCh ARGS((SHORTCARD pRule, CHAR pCh));
  103. extern Tree_tTree Tree_MakeTreeSet ARGS((SHORTCARD pRule, Sets_tSet pSet));
  104. extern Tree_tTree Tree_MakeTreeString ARGS((SHORTCARD pRule, StringMem_tStringRef pString));
  105. extern Tree_tTree Tree_MakeTreeRule ARGS((SHORTCARD pRule, Tree_tTree pPatterns, Texts_tText pTargetCode, SHORTCARD pLine, SHORTCARD pCodeMode, SHORTCARD pRuleNr));
  106. extern Tree_tTree Tree_MakeTreePattern ARGS((SHORTCARD pRule, Sets_tSet pStartStates, Tree_tTree pRegExpr, Tree_tTree pRightContext, BOOLEAN pIsConstantRE, SHORTCARD pPatternNr, Positions_tPosition pPosition));
  107. extern void Tree_WriteTree ARGS((Tree_tTree t));
  108. extern void BEGIN_Tree();
  109.